package org.hidroinformatica.testes;

import java.io.File;
import java.io.IOException;
import java.io.Serializable;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.hidroinformatica.shapes.ShapeFileReader;
import org.hidroinformatica.shapes.exceptions.EmptyDefinitionMapException;
import org.hidroinformatica.testes.beans.Estado;

public class Teste
{
	public static void main(String[] args)
	{
		String pathname = "./lib/ESTADOS.shp";
		
		try
		{
			Map<String, String> definitions = new HashMap<String, String>();
			
			definitions.put("NAME", 			"nome");
			definitions.put("CODE", 			"sigla");
			definitions.put("status",		"status");
			definitions.put("populacao",		"populacao");
			definitions.put("the_geom", 		"poligono");
			
			definitions.put("ultimoCens", 	"ultimoCenso");
			definitions.put("pib", 			"pib");
			
			definitions.put("ID_PAIS",		"pais.id");
			definitions.put("pais.sigla",	"pais.sigla");
			definitions.put("COUNTRY", 		"pais.sigla");
			definitions.put("pais_pib", 		"pais.pib");
			definitions.put("pais_popul",	"pais.populacao");
			
			File shape = new File(pathname);
			ShapeFileReader reader = new ShapeFileReader(Estado.class, shape, definitions);
			
			//reader.setSrid(4326);
			reader.setSrid(900913);
			
			List<Serializable> estados = reader.getRecords();
			
			if(estados != null && !estados.isEmpty())
			{
				for (Serializable serializable : estados)
				{
					Estado e = (Estado) serializable;
					
					System.out.println("\n");
					System.out.println("Sigla: 			" + e.getSigla());
					System.out.println("Nome: 			" + e.getNome());
					System.out.println("População: 		" + e.getPopulacao());
					System.out.println("PIB: 			" + e.getPib());
					System.out.println("Crianças: 		" + e.getCriancas());
					System.out.println("Ultimo Censo: 	" + e.getUltimoCenso());
					System.out.println("Status: 		" + e.getStatus());
					System.out.println("País: 			" + e.getPais());
					System.out.println("Geometria		" + e.getPoligono().toString().substring(0, 60));
				}
			}
		} catch (IOException e) {
			e.printStackTrace();
		} catch (NullPointerException e) {
			e.printStackTrace();
		} catch (EmptyDefinitionMapException e) {
			e.printStackTrace();
		}
	}
}

